package cn.zzz.openplatform.amap.model.direction;

import cn.hutool.core.annotation.Alias;
import cn.zzz.openplatform.amap.model.AmapOpenApiResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 骑行路径规划响应结果
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AmapBicyclingDirectionResponse extends AmapOpenApiResponse {
    /**
     * 起点坐标
     * 格式:X,Y
     */
    private String origin;

    /**
     * 终点坐标
     * 格式:X,Y
     */
    private String destination;

    /**
     * 骑行方案列表信息
     */
    private List<Path> paths;

    @Data
    public static class Path {
        /**
         * 起终点的骑行距离, 单位：米
         */
        private Integer distance;

        /**
         * 起终点的骑行时间, 单位：秒
         */
        private Integer duration;

        /**
         * 具体骑行结果
         */
        private List<Step> steps;
    }

    @Data
    public static class Step {
        /**
         * 路段骑行指示
         * 例如：“骑行54米右转”
         */
        private String instruction;

        /**
         * 此段路道路名称
         * 有可能出现空，需要特别指出，日后会用null表示
         */
        private String road;

        /**
         * 此段路骑行距离, 单位：米
         */
        private Integer distance;

        /**
         * 此段路骑行方向
         * 例如：“南”
         */
        private String orientation;

        /**
         * 此段路骑行耗时, 单位：秒
         */
        private Integer duration;

        /**
         * 此段路骑行的坐标点
         * 格式：X,Y;X1,Y1;X2,Y2
         */
        private String polyline;

        /**
         * 此段路骑行主要动作
         * 内容为中文指示。
         * 骑行·主要动作，可能为空，也可能为左转、右转、向左前方行驶、向右前方行驶等
         */
        private String action;

        /**
         * 此段路骑行辅助动作
         * 内容为中文提示。
         * 例如：“到达目的地”
         */
        @Alias("assistant_action")
        private String assistantAction;
    }
}
